import type { RouteRecordNormalized } from 'vue-router';

// 使用 Webpack 的 require.context 替代 Vite 的 import.meta.glob
const modulesContext = require.context('./modules', false, /\.ts$/);
const externalModulesContext = require.context('./externalModules', false, /\.ts$/);

function getModules(context: __WebpackModuleApi.RequireContext) {
  const modules: any = {};
  context.keys().forEach((key) => {
    modules[key] = context(key);
  });
  return modules;
}

const modules = getModules(modulesContext);
const externalModules = getModules(externalModulesContext);

function formatModules(_modules: any, result: RouteRecordNormalized[]) {
  Object.keys(_modules).forEach((key) => {
    const defaultModule = _modules[key].default;
    if (!defaultModule) return;
    const moduleList = Array.isArray(defaultModule)
      ? [...defaultModule]
      : [defaultModule];
    result.push(...moduleList);
  });
  return result;
}

export const appRoutes: RouteRecordNormalized[] = formatModules(modules, []);

export const appExternalRoutes: RouteRecordNormalized[] = formatModules(
  externalModules,
  []
);
